////
////  YJSDelegate.swift
////  YFree
////
////  Created by YMac on 2018/11/23.
////  Copyright © 2018 yangzhe. All rights reserved.
////
//import JavaScriptCore
//import SafariServices
//
//@objc public protocol YJSProtocol:JSExport{
//    func getDevice() -> String
//    func getAppName() -> String
//    func getVersion() -> String
//    func getIP() -> String
//    func getDebug() -> String
//    func getHttpHeader() -> String
//    func getUserEntity() -> String
//    func closeKeyBoard()
//    func openQQ(_ qq:String)
//    func goBack()
//    func close()
//    func close2()
//    func openBrowser(_ url:String)
//    func openBrowser2(_ url:String)
//    func log(_ msg:String)
//    func toast(_ msg:String)
//    func showProgress()
//    func dismissProgress()
//    func copy(_ content:String)
//}
//
//open class YJSDelegate2: NSObject,UIWebViewDelegate,YJSProtocol {
//    open weak var vc:YUIViewController!
//    open weak var webView:UIWebView!
//    open weak var jsContext:JSContext!
//    open weak var progress:WebviewProgressLine?
//    open var canShowProgress = false
//
//    public init(canShowProgress:Bool = false) {
//        self.canShowProgress = canShowProgress
//    }
//
//    open func getDevice() -> String { return YConfig.device }
//
//    open func getJsObjName() -> String { return "yPhone" }
//
//    public final func webViewDidStartLoad(_ webView: UIWebView) {
//        self.webView = webView
//        self.vc = webView.viewContainingController() as? YUIViewController
//        self.jsContext = self.webView.value(forKeyPath: "documentView.webView.mainFrame.javaScriptContext") as? JSContext
//        self.jsContext?.setObject(self, forKeyedSubscript:NSString(string:getJsObjName()))
//        if canShowProgress{
//            let progress = WebviewProgressLine(frame: CGRect(x: 0, y: webView.frame.origin.y, width: vc.yScreenWidth, height: 3))
//            progress.lineColor = YConfig.themeColor
//            self.progress = progress
//            webView.superview?.addSubview(progress)
//            self.progress?.startLoadingAnimation()
//        }
//        yWebViewDidStartLoad()
//    }
//
//    public final func webViewDidFinishLoad(_ webView: UIWebView) {
//        if canShowProgress {
//            progress?.endLoadingAnimation()
//        }
//        yWebViewDidFinishLoad()
//    }
//
//    public final func webView(_ webView: UIWebView, didFailLoadWithError error: Error) {
//        if canShowProgress {
//            progress?.endLoadingAnimation()
//        }
//        yDidFailLoadWithError()
//    }
//
//    open func yWebViewDidStartLoad() {}
//    open func yWebViewDidFinishLoad() {}
//    open func yDidFailLoadWithError() {}
//
//    open func getAppName() -> String {
//        return YAppUtils.getAppName()
//    }
//
//    open func getVersion() -> String {
//        return YAppUtils.getAppVersionCode()
//    }
//
//    open func getIP() -> String {
//        return YConfig.IP
//    }
//
//    open func getDebug() -> String {
//        return YConfig.DEBUG ? "1" : "0"
//    }
//
//    open func getHttpHeader() -> String {
//        return "{}"
//    }
//
//    open func getUserEntity() -> String {
//        return ""
//    }
//
//    open func closeKeyBoard() {
//        self.vc.yRunOnUIThread {
//            self.vc.yCloseKeyBoard()
//        }
//    }
//
//    open func openQQ(_ qq:String) {
//        YQQUtils.openQQ(vc: self.vc, qq)
//    }
//
//    open func goBack() {
//        self.vc.yRunOnUIThread {
//            self.webView.goBack()
//        }
//    }
//
//    open func close() {
//        self.vc.yRunOnUIThread {
//            self.vc.yPopVC()
//        }
//    }
//
//    open func close2() {
//        self.vc.yRunOnUIThread {
//            self.vc.yDismissVC()
//        }
//    }
//
//    open func openBrowser(_ url:String) {
//        UIApplication.shared.openURL(URL(string: url)!)
//    }
//
//    open func openBrowser2(_ url:String){
//        let webVC = SFSafariViewController(url: URL(string: url)!)
//        if #available(iOS 10.0, *) {
//            webVC.preferredBarTintColor = YConfig.navigationBarTintColor
//        }
//        self.vc.present(webVC, animated: true, completion: nil)
//    }
//
//    open func log(_ msg:String) {
//        self.vc.yPrint(msg)
//    }
//
//    open func toast(_ msg:String) {
//        self.vc.yToast(msg.replacingOccurrences(of: "<br/>", with: "\n"))
//    }
//
//    open func showProgress() {
//        self.vc.yShowLoadingProgress()
//    }
//
//    open func dismissProgress() {
//        self.vc.yDismissLoadingProgress()
//    }
//
//    open func copy(_ content:String){
//        UIPasteboard.general.string = content
//    }
//
//    //self
//    open func yPresentVC(storyBoardName: String, storyBoardIdentifier: String, yBundle: [String : Any]? = nil) {
//        self.vc.yRunOnUIThread { self.vc.yPresentVC(storyBoardName: storyBoardName, storyBoardIdentifier: storyBoardIdentifier, yBundle: yBundle) }
//    }
//
//    open func yPushVC(storyBoardName: String, storyBoardIdentifier: String, yBundle: [String : Any]? = nil) {
//        self.vc.yRunOnUIThread { self.vc.yPushVC(storyBoardName: storyBoardName, storyBoardIdentifier: storyBoardIdentifier, yBundle: yBundle) }
//    }
//
//    open func yPresentVC(viewController: YUIViewController, storyBoardName: String, storyBoardIdentifier: String, yBundle: [String : Any]? = nil) {
//        viewController.yRunOnUIThread { viewController.yPresentVC(storyBoardName: storyBoardName, storyBoardIdentifier: storyBoardIdentifier, yBundle: yBundle) }
//    }
//
//    open func yPushVC(viewController: YUIViewController, storyBoardName: String, storyBoardIdentifier: String, yBundle: [String : Any]? = nil) {
//        viewController.yRunOnUIThread { viewController.yPushVC(storyBoardName: storyBoardName, storyBoardIdentifier: storyBoardIdentifier, yBundle: yBundle) }
//    }
//
//    open func yDismissVC(_ completion: (() -> Void)? = nil) {
//        self.vc.yRunOnUIThread { self.vc.yDismissVC(completion) }
//    }
//
//    open func yPopVC(){
//        self.vc.yRunOnUIThread { self.vc.yPopVC() }
//    }
//
//    open func yPopVCWithResult(responseCode: Int, data: Any?){
//        self.vc.yRunOnUIThread { self.vc.yPopVCWithResult(responseCode: responseCode, data: data) }
//    }
//
//    open func yPopToTargetVC(viewController:YUIViewController){
//        self.vc.yRunOnUIThread { self.vc.yPopToTargetVC(viewController: viewController) }
//    }
//
//    open func yPopToRootVC(){
//        self.vc.yRunOnUIThread { self.vc.yPopToRootVC() }
//    }
//}
